package com.sikaryofficial.workbench.domain.entity;

import com.baomidou.mybatisplus.annotation.FieldFill;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import com.fasterxml.jackson.annotation.JsonFormat;
import io.swagger.annotations.ApiModelProperty;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Getter;
import lombok.NoArgsConstructor;
import lombok.Setter;
import lombok.ToString;

import java.io.Serializable;
import java.math.BigDecimal;
import java.util.Date;


/**
 * 预订单对象 order_header_t
 *
 * @author wuweihong
 * @date 2024-09-23
 */
@Getter
@Setter
@Builder
@NoArgsConstructor
@AllArgsConstructor
@ToString
@TableName("order_header_t")
public class OrderHeader implements Serializable {
    private static final long serialVersionUID = 1L;
    /**
     * 订单ID
     */
    @TableId(type = IdType.ASSIGN_ID, value = "order_header_id")
    private Long orderHeaderId;

    /**
     * 订单编号【年份_月份_订单序号】
     */
    private String orderHeaderNo;
    /**
     * 品牌编码
     */
    private String brandNo;
    /**
     * 订单头状态，0-draft,1-Confirmation,2-电子签章;其他状态待扩展
     */
    private Integer headerStatus;
    /**
     * 总数量(烟杆)
     */
    private Long totalQuantity;
    /**
     * 总价
     */
    private BigDecimal amount;
    /**
     * 币种
     */
    private String currency;
    /**
     * 其他信息
     */
    private String message;
    /**
     * 备注信息：作用于定制单拒绝理由
     */
    private String remark;
    /**
     * 租户号
     */
    private Integer tenantId;
    /**
     * 乐观锁
     */
    private Integer revision;
    /**
     * 创建人
     */
    @TableField(fill = FieldFill.INSERT)
    private Long createdBy;
    /**
     * 创建时间
     */
    @TableField(fill = FieldFill.INSERT)
    private Date createdTime;
    /**
     * 更新人
     */
    @TableField(fill = FieldFill.UPDATE)
    private Long updatedBy;
    /**
     * 更新时间
     */
    @TableField(fill = FieldFill.UPDATE)
    private Date updatedTime;
    /**
     * 删除版本：默认为0；删除则赋值当前记录主键ID
     */
    private Long deletedVersion;

    @ApiModelProperty(value = "合同签署处理状态：0-未处理 1-已处理")
    private Integer contractStatus;
    @ApiModelProperty(value = "定金处理状态：0-未处理 1-已处理")
    private Integer downPaymentStatus;
    @ApiModelProperty(value = "尾款处理状态：0-未处理 1-已处理")
    private Integer finalPaymentStatus;
    @ApiModelProperty(value = "预计到货时间")
    @JsonFormat(pattern = "yyyy-MM-dd")
    private Date estimateArrivalTime;
}
